


#ifndef _INTRUMENTO_QCO_H

#define _INTRUMENTO_QCO_H

#include "Superficie_Triangular.h"
#include "Volumen_Tetraedral.h"
#include "polhemusControl.h"
#include "VolumeLimite.h"
#include <vector>


class Instrumento_Quirurgico
{
public:
	//Constructor
	Instrumento_Quirurgico();
	Instrumento_Quirurgico(char **filenamePtos, char **filenameIndices, int NroMallas);

	//Propiedades
	void set_TipoGeometria(const TipoGeometria &tipo){tipogeometria = tipo;}
	TipoGeometria get_TipoGeometria(){return tipogeometria;}

	vector<Superificie_Triangular> getSupTriang(){return objSuperficieTriangular;}
	Superificie_Triangular &getOneSupTriang(const int &i){return objSuperficieTriangular[i];}//REF

	void set_FnamePtosInst(char **filename){charFnamePtosInst = filename;}
	void set_FnameIndsInst(char **filename){charFnameIndsInst = filename;}

	void set_NumeroMallas(const int &malla){intNroMallas = malla;}
	
	void set_CoordenadaX(const float &posX){fX = posX;}
	void set_CoordenadaY(const float &posY){fY = posY;}
	void set_CoordenadaZ(const float &posZ){fZ = posZ;}
	void set_RotacionX(const float &rotX){rX = rotX;}
	void set_RotacionY(const float &rotY){rY = rotY;}
	void set_RotacionZ(const float &rotZ){rZ = rotZ;}
	
	void set_IDTriangCol(const int id){intIDTriangCol = id;}  //TEMPORAL

	float &get_CoordenadaX(){return fX;}
	float &get_CoordenadaY(){return fY;}
	float &get_CoordenadaZ(){return fZ;}
	float &get_RotacionX(){return rX;}
	float &get_RotacionY(){return rY;}
	float &get_RotacionZ(){return rZ;}

	void set_GradosPuntaInstrumento(int value){intGradosPuntaInstrumento = value;}
	int get_GradosPuntaInstrumento(){return intGradosPuntaInstrumento;}

	int get_IDTriangCol(){return intIDTriangCol;}   //TEMPORAL

	Esfera& get_Esfera(){return objEsfera;}

	//Metodos
	void CargarInstrumento();
	void CalcularEsfera(Triangulo t);

private:
	float fX, fY, fZ, rX, rY, rZ;
	unsigned int intNroMallas;
	char **charFnamePtosInst;
	char **charFnameIndsInst;
	
	int intIDTriangCol;  //TEMPORAL
	int intGradosPuntaInstrumento;
	
	vector<Superificie_Triangular> objSuperficieTriangular;
	Volumen_Tetraedral objVolumenTetraedral;
	TipoGeometria tipogeometria;

	Esfera objEsfera;

};

#endif

